package com.langll.ai.stock.service;

import com.langll.ai.base.service.IBaseService;
import com.langll.ai.stock.model.Ticket;

import java.util.List;

/**
 * <p>
 * 股票查询票据信息 服务接口
 * </p>
 *
 * @author langll
 * @since 2025-04-21
 */
public interface ITicketService extends IBaseService<Ticket> {

    /**
     * 创建股票查询票据
     * 
     * @param symbol 股票代码
     * @param period 周期
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @param adjust 复权类型
     * @param timeout 超时时间
     * @return 创建的票据
     */
    Ticket createTicket(String symbol, String period, String startDate, String endDate, String adjust, Float timeout);
    
    /**
     * 更新票据状态
     * 
     * @param id 票据ID
     * @param status 状态
     * @param resultId 结果ID
     * @return 是否更新成功
     */
    boolean updateTicketStatus(Long id, Integer status, Long resultId);
    
    /**
     * 根据股票代码查询票据
     * 
     * @param symbol 股票代码
     * @return 票据列表
     */
    List<Ticket> getTicketsBySymbol(String symbol);
    
    /**
     * 获取所有票据列表
     * 
     * @return 所有票据列表
     */
    List<Ticket> getAllTickets();
    
    /**
     * 获取未执行的票据列表
     * 
     * @return 未执行的票据列表
     */
    List<Ticket> getPendingTickets();
    
    /**
     * 获取执行中的票据列表
     * 
     * @return 执行中的票据列表
     */
    List<Ticket> getRunningTickets();
    
    /**
     * 获取已完成的票据列表
     * 
     * @return 已完成的票据列表
     */
    List<Ticket> getCompletedTickets();
    
    /**
     * 更新票据信息
     * 
     * @param ticket 票据信息
     * @return 更新后的票据
     */
    Ticket updateTicket(Ticket ticket);
}